import { withInstall } from '../../helpers/installer'
import Form from './src/Form.vue'

export type { FormExpose } from './src/formExpose'
export { renderLabelMessage } from './src/helpers/renderLabelMessage'
export {
  type AllSchemas,
  type CrudSchema,
  useCrudSchemas,
} from './src/hooks/useCrudSchemas'

export { useForm } from './src/hooks/useForm'

export type {
  AutocompleteComponentProps,
  CascaderComponentProps,
  CheckboxGroupComponentProps,
  CheckboxOption,
  ColorPickerComponentProps,
  ColProps,
  ComponentName,
  ComponentNameEnum,
  DatePickerComponentProps,
  DateTimePickerComponentProps,
  DividerComponentProps,
  FormItemProps,
  FormProps,
  FormSchema,
  FormSetProps,
  InputComponentProps,
  InputNumberComponentProps,
  InputPasswordComponentProps,
  PlaceholderModel,
  RadioButtonComponentProps,
  RadioGroupComponentProps,
  RadioOption,
  RateComponentProps,
  SelectComponentProps,
  SelectOption,
  SelectV2ComponentProps,
  SwitchComponentProps,
  TimePickerComponentProps,
  TimeSelectComponentProps,
  TransferComponentProps,
  TreeSelectComponentProps,
} from './src/types'

const FormInstaller = withInstall(Form)
export { Form, FormInstaller }
